如何选择行业
很多同学在入行的时候,实际上是一个懵懵懂懂的状态。 看到别人做java, 自己也去做java. 看到别人说PHP是世界最好的语言, 于是自己投PHP职位的简历。
这样是不行的。可能浪费几年时间之后,才发现这个,职位不适合自己,到时候,转头就比较晚了,
在软件开发的世界当中,在我看来,目前有这么几种职业,新人可以直接上手.
程序员
程序员是,所有,职业方向当中,对于技术,最最看重的职业,它的入门门槛不高,但是做的好的门槛很高
对人最大的要求就是, 第一,脑子要灵活, 第二英语要好, 第三,要学会一定的沟通能力,
这个职业,可以保证未来十年左右,自己会有一个比较体面的工作,可以坐在上档次的写字楼里面,跟团队谈论一些看起来很高大上的东西,做得好的话还很受人尊重,
这个职业带来的缺点是,回报率看似高实际低,如果在一线城市工作,那么拿到的工资虽然高,但是用于租房,买房等方面的开销是巨大的,甚至很可能工作十年,也没有办法在这个城市买到房,
在手艺方面,跟医生,律师一样是越老越吃香,但是不一样的地方在于: 中年程序员在中国,是会要失业的,各个软件公司招聘的职位,不会找十年工作经验以上的人做基层程序员。
程序员可以分成不同的语言,也可以分成前端和后端,所以,大家要先了解下面的分类:
- 移动前端: 用于手机设备,或者 浏览器上的编程语言, 例如: Android设备上的java, iOS设备上的 Object C, swift, 以及H5页面上的javascript, css 等
- 移动后端: 用于服务器端运行的程序, 例如: C/C++, java, python , php, ruby , C#, go, erlang, scala, node 等
- 桌面应用: 例如 C, java , QT, TCL, VB等
对于现在的形势来说,做互联网相关的开发机会更多,很多的人是从事于移动的前端和移动的后端的工作,
根据我们之前的统计,在北京,2014年到2016年,无论是安卓, 还是IOS, 大约每年都会新增1万以上的,前端开发工程师. 他们的开发语言就是,安卓或者ios,
对于一些大公司,有自己的产品的话,往往喜欢招移动后端或者桌面应用方面的人,例如c语言,或者QT. 这样的工作,不太好更换,
对于一线城市的程序员,对于一个雇主的工作时间,不会超过一年半,
更换工作的时候,最大的忌讳,就是转行,或者是更换编程语言,
如果一个人之前是做前端的,他想跳槽去做后端,那么他在新公司的工资会大打折扣,因为他并没有这方面的工作经验。
所以大家在选择自己,职业方向的时候,一定要用三天五天的时间去了解这门语言,看一下是否适合自己,
喜欢苹果设备的同学,可以去做ios开发
喜欢安卓产品的同学,或者,对手机品牌没有什么要求,但就喜欢摆弄这些小设备的同学,可以去做安卓开发,或者后端开发
喜欢在大公司里,一直做下去, 追求工作的稳定的同学,那么就可以先投递大公司的简历,然后,由公司给自己安排做什么就做什么。
如果,如果你什么都不了解,就想找一个很好就业的工作的话,那么就去做移动后端的开发,这个是软件行业的万金油。
如何选择,编程语言
C, Java, 属于编译性语言,它们的特点是,语法复杂,里面,比较底层,和java语言都涉及到,指针,涉及到内存回收,涉及到性能问题。掌握这些语言的时间往往在一年以上,
python, ruby, node 不需要编译,可以立刻运行. 这样的语言语法简洁,掌握的时间更快一些,
对于ios平台,只能用 Object C, 或者swift. 这个情况,就没法选择,
编程语言,建议大家选择现代化的编程语言。
如果做Web后端开发,建议新人选择Ruby
个人建议,选择 Ruby, 应用很广泛,对程序员很友好,其他语言,十行代码,才能搞定的问题,用ruby语言,1到2行代码
所以ruby开发效率非常高, 运行效率在,绝大部分的Web场景,也不差
测试
分成自动化测试和手动测试,这是门槛最低的职位。
可能会有一定偏见,不过我的感觉是,在互联网公司,测试每天的工作内容就是摆弄手机。这个职位其实让一个初中生也是可以胜任的,
测试人员的工作内容就是,测试别人写好的程序,保证系统,稳定运行,保证公司上下,能够对某个软件的情况,有清晰的了解.
这个职位一般在大公司里才会有,高级的测试纸,在一般的互联网公司,测试就是,最普通的人肉测试职位,
一般来说,不建议大家做这样的职位,因为不长久。这个职位往往干个,两年,三年之后,如果不升级成测试经理,不接触更高级的测试工具和方法的话,那么就面临着失业,
如果希望在测试行业,更深入的发展的话,就要尽快多掌握一些自动化测试的技能和工具,早日脱离人肉测试,再多掌握一些性能测试,集成测试等这样的工具,就更好了,
我看到很多公司,都不会有长期的职位来招聘测试人员的,往往都是外包职位,特别是外企这样的情况很多.
已经入了坑的测试同学,要认识到自己的危机,赶紧自学,提高自己的实力,转头向产品经理或者程序员方向发展.
产品经理
这个职位,负责把公司的某个产品做成精准的实现.
这个职位产生于老板思维: 在一家公司里面,老板是最大的产品经理,但是老板往往没有更多的时间,去设计某一个产品的各种细节
这个时候就需要一个人,能够:
- 代替老板,做细碎的事儿
- 懂一些互联网的技术,
- 跟整个团队沟通,搭建起老板和技术团队之间的桥梁,
产品经理要深刻领悟老板的思路,另外一方面又要可以把老板的思路转换成程序员可以理解的原型图,同时跟程序员团队一起工作,把事情做出来, 还要管理项目的进度,
所以在国内我看到的现象是: 好的产品经理,将来是具备做老板的潜质的,因为他在工作的过程当中,又要涉及团队管理,又要涉及公司的战略定制,又要涉及整体把握,对人的要求很高,得到了相当好的锻炼.
如果你想从事软件行业,很想在互联网的方向做出一些事情,但是对程序不太感兴趣,又不想做一些低端的事情的话,可以应聘这个职位,
由于这个职位,需要跟程序员做大量的沟通,而程序员又是不好沟通的,当某个不职业的程序员,说不过你的时候,往往会用一些技术术语来搪塞你. 所以在国内往往这个职位,要求懂技术.
所以我们也会看到,很多工作了两三年的人,就说自己要转型做产品经理,
这个职位,是我比较看好的非编程职位. 有志于做老板的同学可以考虑.
ui设计师
每一个公司的产品,有一半的灵魂取决于,有爱设计师,这个职位,对于公司,非常重要,好的ui设计师,可遇而不可求,
如果你对,美术设计很感兴趣,对于,界面,美感,很有自己的想法,是一名,科班出身的,艺术院校,毕业生,那么,欢迎从事这个职位,做得好的话,你会有很大的一片,发展的,天地,
这个职位,跟程序员一样也是,需要经过,好多年的,磨练才能够,出师的,但是一旦出师的话,可以很容易的自立门户,
这个职位的职责是,为,产品的原型图,作出,具体的界面设计,可能需要在,某一行字的字体颜色大小方面,下很多功夫,在,某一个,页面的方块上,用圆角还是用直角?要不要加,外包线这方面,下各种琢磨,
工作的时候,这个职位可能是,最容易感觉到委屈的,可能他设计的作品,公司里的一号老板满意,2号不满意,3号,满意,4号又不满意,所以说,非常虐心,
不过这个职位的需求数量,大约跟,产品经理一样.
适合:
- 艺术院校科班出身的毕业生
- UI设计的狂热爱好者
运维
这个职位门槛不算高,有一点偏,
在过去的,硬件环境下,程序员没有太多的精力,去掌握某一个操作系统或者服务器,这个时候,大公司为了维持自己的日常工作,就需要专门雇一批人来做这样的事儿,比如说,管理系统,上传文件,做一些简单的指令操作,优化服务器的性能等等
但是现在来看,随着我们的操作系统越来越简单,需求越来越少,可能只有大公司才会专门有一个团队,每个人负责一百个服务器,在中小型软件公司里面,是不需要这样的职位的,
这样的职位,往往在过去,是需要某某认证工程师这样的证书的
工作内容就是部署代码,做7X24小时的响应,随时查看服务器的状态. 由于要通宵, 所以这个职位不适合女孩子,
能不做就不做,工资不会高的, 也没有太多的发展. 我认识,做运维的同学,如果几年之后没有当上部门经理,都转型了.
UE, UX
这个,一般来说是,跟,用户体验相关的,流程改进人员,只有大公司才养得起,
工作内容是,改进用户体验,让某一个,流程,从点,三下鼠标,变成点两下鼠标,让用户觉得某个产品好用
个人认为,在公司内部,让某个人来兼这个职是最好的,不要专门的,雇一个人来做这个事儿
很多时候,产品经理或者ui设计师,都可以,兼任这个职位. 不建议大家考虑,除非条件很优厚,
技术经理
这个职位,是我大力推荐的. 我认为每个,程序员做三年以后都要带团队,都要独立负担起几个项目,成为公司的顶梁柱.
往往这个职位是为工作三年到五年的人准备的,他的职责是
- 负责整个项目, 保证项目的顺利交付.
- 负责管理团队,培养团队
- 在技术层面可以解决任何问题.
这个职位的待遇比基层程序,要有明显的提高。 未来的方向就是,cto或者技术合伙人,
架构师
他的工作职责就是,对于某个软件项目,做顶层设计,使用哪些第三方工具,如何划分前端后端,如何做系统不同部分的耦合和关联等等。
架构师在十年以前,可以说就已经注定要死掉了,在十年后的今天,我很少看到,有人说自己的职位就是架构师,只负责价格,不写代码,这个是完全不合理的,
这个职位在日本外包项目中很流行,往往是由日本的,架构师,把大体的架构都设计出来,甚至包括ui,甚至包括某个按钮上的文字,都要一丝不苟的画出来,然后把设计图交给国内的软件公司来做,
这里有个巨大的矛盾点: 软件项目非常复杂,在系统架构的粗粒度层面,完全看不到细节中潜在的问题。很多问题只有在代码写了一大半之后才会凸现出来,这时能作出正确决策的人,只有一线的,可以接触到代码的基层员工,
现在随着,编程技术的发展,编程的门槛越来越低,跟架构相关的很多工作都可以交给一线程序员或者技术经理去完成.
所以大家如果想跳槽的话,那么直接去做技术经理或者CTO就好了,对于公司来说,没有必要安排这个职位。